这表明在 MySQL 数据库中进行操作时,涉及到的两个表或列使用了不同的字符集排序规则 -collation 。具体来说,一个是 utf8mb4_general_ci,另一个是 utf8mb4_0900_ai_ci。这种差异导致 MySQL 无法正确处理字符串比较或连接操作,JSON_TABLE 也是一样。
下面这个方式,写 SQL 的时候,可以解决(FYI):
SELECT *
FROM `__TABLE_1__` B
JOIN
JSON_TABLE(
F0001411Field->>'$.subDataIds',
'$[*]' COLUMNS (
subDataId VARCHAR(255) PATH '$'
)
) AS `J`
LEFT JOIN `__TABLE_2__` C ON B.associateCustomerField->>'$.associateDataId' = C.`dataId`
LEFT JOIN `__TABLE_3__` S ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci
WHERE ....
ORDER BY 1 DESC
注意上面最后部分:ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci。